home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209b.zip / octave-2.09 / DLFCN.ZIP / dlfcn / octave / MArray-defs.h < prev    next >
Text File  |  1997-08-20  |  1KB  |  68 lines

  1. // Nothing like a little CPP abuse to brighten everyone's day.  Would
  2. // have been nice to do this with template functions but as of 2.5.x,
  3. // g++ seems to fail to resolve them properly.
  4.  
  5. #define DO_VS_OP(OP) \
  6.   int l = a.length (); \
  7.   T *result = 0; \
  8.   if (l > 0) \
  9.     { \
  10.       result = new T [l]; \
  11.       const T *x = a.data (); \
  12.       for (int i = 0; i < l; i++) \
  13.     result[i] = x[i] OP s; \
  14.     }
  15.  
  16. #define DO_SV_OP(OP) \
  17.   int l = a.length (); \
  18.   T *result = 0; \
  19.   if (l > 0) \
  20.     { \
  21.       result = new T [l]; \
  22.       const T *x = a.data (); \
  23.       for (int i = 0; i < l; i++) \
  24.     result[i] = s OP x[i]; \
  25.     }
  26.  
  27. #define DO_VV_OP(OP) \
  28.   T *result = 0; \
  29.   if (l > 0) \
  30.     { \
  31.       result = new T [l]; \
  32.       const T *x = a.data (); \
  33.       const T *y = b.data (); \
  34.       for (int i = 0; i < l; i++) \
  35.     result[i] = x[i] OP y[i]; \
  36.     }
  37.  
  38. #define NEG_V \
  39.   int l = a.length (); \
  40.   T *result = 0; \
  41.   if (l > 0) \
  42.     { \
  43.       result = new T [l]; \
  44.       const T *x = a.data (); \
  45.       for (int i = 0; i < l; i++) \
  46.     result[i] = -x[i]; \
  47.     }
  48.  
  49. #define DO_VS_OP2(OP) \
  50.   int l = a.length (); \
  51.   if (l > 0) \
  52.     { \
  53.       T *tmp = a.fortran_vec (); \
  54.       for (int i = 0; i < l; i++) \
  55.     tmp[i] OP s; \
  56.     }
  57.  
  58. #define DO_VV_OP2(OP) \
  59.   do \
  60.     { \
  61.       T *a_tmp = a.fortran_vec (); \
  62.       const T *b_tmp = b.data (); \
  63.       for (int i = 0; i < l; i++) \
  64.     a_tmp[i] += b_tmp[i]; \
  65.     } \
  66.   while (0)
  67.  
  68.